/**
 * 实现通用的数组排序
 * 规则：从大到小
 * 算法：选择排序
 * 测试：char 数组，int数组
 */

#include<iostream>
using namespace std;

template<class T>
void Printf(T arr[], int len)
{
  for (int i = 0; i < len; i++)
  {
    cout << arr[i] << " ";
    cout << endl;
  }
}

template<class T>
void mySwarp(T &a, T &b)
{
  T temp = a;
  a = b;
  b = temp;
}

template<class T>
void mySort(T arr[], int len)
{
  for (int i = 0; i < len; i++)
  {
    int max = i;
    for (int j = i; j < len; j++)
    {
      if(arr[j] > arr[max]) {
        max = j;
      }
    }
    if(max != i) {
      mySwarp(arr[max], arr[i]);
    }
  }
  
}

void test0() {
  // 测试char数组
  char charArr[] = "cdbaef";
  int num = sizeof(charArr) / sizeof(char);
  mySort(charArr, num);
  Printf(charArr, num);
};

void test1() {
  // 测试char数组
  int intArr[] = {1, 3, 2, 6, 8, 4, 9,5};
  int num = sizeof(intArr) / sizeof(int);
  mySort(intArr, num);
  Printf(intArr, num);
};

int main() {
  // test0();
  test1();
  return 0;
}
